perm filename L2[F8,ALS] blob
sn#321379 filedate 1977-12-14 generic text, type T, neo UTF8
1 *CHECKERS as of December 14 1977. EQU's
2 * S2 section
3 *Resident package addresses
4 JOYT EQU H'0C00'
5 LINE EQU H'0FDF'
6 SHCB EQU H'0FE2'
7 INPF EQU H'0FE3'
8 WTLN EQU H'0FE5'
9 TXC EQU H'0FE8'
10 CMRG EQU H'0FEA'
11 DBNC EQU H'0FEB'
12 UPI EQU H'0FFA'
13 JOYI EQU H'21AD'
14 IJS EQU H'22DB'
15 SHL EQU H'27C6'
16 SHR EQU H'27D3'
17 PUSH EQU H'40A9'
18 POPS EQU H'40BC'
19 SPS EQU H'40D0'
20 WDG EQU H'4105'
21 WAUD EQU H'41C8'
22 WAU1 EQU H'41CC'
23 CDS EQU H'41D5'
24 WMS EQU H'4205'
25 UDAT EQU H'424D'
26 TRAN EQU H'43CD'
27 FCS EQU H'43D6'
28 WAIT EQU H'4501'
29 TIR EQU H'45DB'
30 CLER EQU H'4762'
31 *Misc. constants
32 TCMD EQU H'44'
33 BCMD EQU H'6D'
34 TCOL EQU H'80' TEXT COLOR
35 ULIN EQU H'F5'
36 COM EQU H'8F7'
37 *
38 *RAM assignments
39 BFLG EQU H'0C20'
40 BLNF EQU H'0C21' Blink flag
41 XBLN EQU H'0C22' X value to blink
42 YBLN EQU H'0C23' Y value to blink
43 BCNT EQU H'0C24' Counter used in OKMV
44 BKMV EQU H'0C25' Data to index book moves
45 HSAV EQU H'0C26' H save location
46 HSAL EQU H'0C27' HL save location
47 PLY0 EQU H'0C28' Players choice of ply depth
48 COL0 EQU H'0C29' 0 if machine plays black
49 SELX EQU H'0C2A' Move count
50 AP20 EQU H'0C2C' ACTM+PASM+9 at HL=20
51 XOLD EQU H'0C2D' X coord touch point (double jump)
52 YOLD EQU H'0C2E' Y coord touch point (double jump)
53 CFLG EQU H'0C2F' Compression flag for ply record
54 OBJ0 EQU H'0C30' Board 1, thru H'0E0F'
55 TREE EQU H'0E10' Tree data, thru H'0EFF', Player's b
56 TRE2 EQU H'0E20' Machine's first board here
57 TRE3 EQU H'0E3E' Passed flag at level 30
58 TRE5 EQU H'0E50' PLY 3 location
59 PLMD EQU H'0E5B' Used for temp store of player's mov
60 PLMV EQU H'0ED0' Overlay region used for player's mo
61 PLMF EQU H'0EE0' and move numbers
62 SCOR EQU H'0EF0' 28 bytes for scores
63 XPOS EQU H'0F0C' XPOSITION(CURSOR)
64 YPOS EQU H'0F0F' YPOSITION(CURSOR)
65 OBJ1 EQU H'0F10' Board 2, thru H'0FAF'
66 MOBS EQU H'0FB0' Mobility and DJ flags (14 bytes)
67 RGSV EQU H'0FC1' Register save start (int. update)
68 *
69 *Scratch pad assignments
70 TEMP EQU H'8'
71 J EQU H'9'
72 HU EQU H'A'
73 HL EQU H'B'
74 PLOC EQU O'3' LISU value for ACTIVE and PASSIVE
75 KLOC EQU O'4' LISU value for KING's and special d
76 ELOC EQU O'5' LISU value for EMPTY's area
77 ISA EQU O'30' ISAR value for active area
78 ISP EQU O'34' ISAR value for passive
79 ISK EQU O'40' ISAR value for kings
80 ACTM EQU O'46' Location of Active material count
81 PASM EQU O'47' Location of Passive material count
82 ISE0 EQU O'50' ISAR value for guard byte
83 ISE EQU O'51' ISAR value for empty (with offset)
84 *Mimimum ply depths
85 PLYT EQU H'E9' Playing depth for Tom (neg. of MOB
86 PLYD EQU H'E1' Playing depth for Dick
87 PLYH EQU H'D9' Playing depth for Harry
88 *SPECIAL CONSTANTS
89 MAT EQU 0 As used in EVAL
90 POT EQU 6
91 X EQU H'1'
92 Y EQU H'2'
93 VX EQU H'3'
94 VY EQU H'4'
95 CHT EQU H'3' CURSOR HEIGHT
96 YTST EQU H'9'
97 XZOP EQU H'34' Line for restorre of X zoom
98 MAXY EQU H'4D' MAX Y COORD (=H'4F'-CHT)
99 *Linkage locations
100 PMOV EQU H'1116' Player's move
101 DJMP EQU H'1229' Jump again entry
102 WMC EQU H'1249' Write message
103 BORD EQU H'132B' Normal redo of board
104 MWAD EQU H'1623'
105 ENIN EQU H'164E'
106 DAI EQU H'166B'
107 SCRD EQU H'167D'
108 SHOW EQU H'1707' Debugging aid to show board
109 ORG H'1790' SELE JUMP
110 *-*-*-
111 1790 28 17 07 SELE PI SHOW
112 1793 28 1F 32 PI WAST Debugging show board
113 1796 63 SEL2 LISU PLOC
114 1797 68 LISL 0
115 1798 10 LR DC,H
116 1799 7C LIS H'C' To get MOVE byte
117 179A 8E ADC
118 179B 70 CLR
119 179C 88 AM
120 179D 50 LR 0,A Save it temporarily
121 179E 94 04 BNZ SEL3
122 17A0 29 1A 93 JMP NEXT To get next MOVE byte
123 17A3 70 SEL3 CLR
124 17A4 18 COM -1 in A
125 17A5 8E ADC Get back to move byte
126 17A6 C0 AS 0
127 17A7 F0 NS 0 Remove right-most on-bit
128 17A8 17 ST Put remaining bits back (and index
129 17A9 E0 XS 0 This gets the extracted bit
130 17AA 56 LR 6,A Save it in 6
131 17AB 16 LM Now get the byte designation
132 17AC 55 SEL4 LR 5,A
133 17AD 12 SR 1
134 17AE 12 SR 1
135 17AF 21 03 NI H'3' Separate the byte indicator part
136 17B1 54 LR 4,A Save it in 4
137 17B2 45 LR A,5
138 17B3 21 13 NI H'13' Separate the JUMP bit and the dire
139 17B5 55 LR 5,A Save them in 5
140 17B6 20 18 DELE LI ISA Process Active and Kings for sourc
141 17B8 C4 AS 4 Add byte #
142 17B9 0B LR IS,A Get to initial byte
143 17BA 4C LR A,S
144 17BB 53 LR 3,A
145 17BC E6 XS 6 Delete moving piece
146 17BD 5C LR S,A from byte
147 17BE 64 LISU KLOC To get to corresponding KING byte
148 17BF 4C LR A,S
149 17C0 F6 NS 6 Was the piece a king?
150 17C1 84 04 BZ DEL2
151 17C3 EC XS S If it was delete king bit
152 17C4 5C LR S,A
153 17C5 77 LIS H'7' Non-zero in 2 for king
154 17C6 52 DEL2 LR 2,A 0 for man, 7 for king, (later 1 fo
155 17C7 63 LISU PLOC Back to active section
156 *Now locate captured piece if jump or find destination in normal m
157 17C8 46 LR A,6 Recall MOVE bit
158 17C9 14 SR 4
159 17CA 84 10 BZ INRH Bit was in right half of byte
160 17CC 53 INLH LR 3,A Save partially shifted MOVE bit
161 17CD 71 LIS H'1' Get direction
162 17CE F5 NS 5 To test right-most bit
163 17CF 84 04 BZ INL2 RF or LB move where 4 shift is cor
164 17D1 43 LR A,3
165 17D2 12 SR 1 LF and LB require an additional sh
166 17D3 53 LR 3,A
167 17D4 72 INL2 LIS H'2' Now test for fore or aft
168 17D5 F5 NS 5
169 17D6 84 13 BZ BOTH Forward move, no byte shift needed
170 17D8 4E LR A,D Only to decrement ISAR
171 17D9 90 10 INL3 BR BOTH
172 *
173 17DB 46 INRH LR A,6 Get MOVE bit again
174 17DC 15 SL 4 Left shift if in right half
175 17DD 53 LR 3,A Save partially shifted MOVE bit
176 17DE 71 LIS H'1'
177 17DF F5 NS 5 Get direction
178 17E0 94 04 BNZ INR2 LF or LB where 4 shift is correct
179 17E2 43 LR A,3
180 17E3 13 SL 1 RF and RB require an additional sh
181 17E4 53 LR 3,A
182 17E5 72 INR2 LIS H'2' Now test fore and aft
183 17E6 F5 NS 5
184 17E7 94 02 BNZ BOTH
185 17E9 4D LR A,I Only to increment ISAR
186 17EA 45 BOTH LR A,5 Now is this a jump or a normal mov
187 *ISAR still points to active region but may designate
188 *an empty square or the capture square
189 17EB 14 SR 4 Set status for jump bit
190 17EC 94 04 BNZ JUMP
191 17EE 29 18 B9 JMP NORM It's a normal move
192 17F1 0A JUMP LR A,IS
193 17F2 24 04 AI H'4' To get to passive pieces
194 17F4 0B LR IS,A
195 17F5 4C LR A,S
196 17F6 E3 XS 3 Remove captured piece
197 17F7 5C LR S,A
198 17F8 0A LR A,IS
199 17F9 24 04 AI H'4' Corresponding king location
200 17FB 0B LR IS,A
201 17FC 4C LR A,S Get byte
202 17FD F3 NS 3 Is the piece a king?
203 17FE 84 07 BZ JUM1 No
204 1800 EC XS S Yes, Remove it
205 1801 5C LR S,A
206 1802 72 LIS H'2'
207 1803 18 COM Fast -3
208 1804 90 03 BR JU11
209 1806 71 JUM1 LIS H'1'
210 1807 18 COM Fast -2
211 1808 50 JU11 LR 0,A
212 1809 20 27 LI PASM
213 180B 0B LR IS,A
214 180C 4C LR A,S
215 180D C0 AS 0
216 180E 5C LR S,A
217 180F 20 18 JU12 LI ISA Back to moved-from location
218 1811 C4 AS 4 Byte number is in 4
219 1812 0B LR IS,A
220 1813 72 LIS H'2'
221 1814 F5 NS 5 Test for fore or aft
222 1815 84 04 BZ JUMA Fore move
223 1817 4E LR A,D Decrement ISAR (destination always
224 1818 90 02 BR JUMB
225 181A 4D JUMA LR A,I Increment ISAR
226 181B 0A JUMB LR A,IS Get the destination byte off-set
227 181C 24 E8 AI H'E8' by subtracting O'30' from ISAR val
228 181E 54 LR 4,A needed if there is a continuation
229 181F 71 LIS H'1' Get direction
230 1820 F5 NS 5 Test for right or left
231 1821 46 LR A,6 Get original piece location
232 1822 84 04 BZ JUM2 0 for R move, ≠0 for L move
233 1824 12 SR 1 Left moves involve a right shift o
234 1825 90 02 BR JUM3
235 1827 13 JUM2 SL 1 Right moves involve a left shift o
236 1828 53 JUM3 LR 3,A Save bit byte in 3, freeing 6 for
237 1829 51 LR 1,A As mask in FIND for continuation
238 182A 4C LR A,S
239 182B E3 XS 3 Set piece down
240 182C 5C LR S,A
241 182D 70 CLR
242 182E C2 AS 2 Was the piece a king?
243 182F 84 05 BZ JUMC No, might be a promotion
244 1831 70 CLR
245 1832 50 LR 0,A Temporary record of promotion cred
246 1833 90 1A BR JUM6 Already a king so no promotion
247 1835 72 JUMC LIS H'2'
248 1836 F5 NS 5 Which side is active
249 1837 0A LR A,IS
250 1838 84 09 BZ JUM4 0 if forward
251 183A 25 18 CI O'30' Is this byte 0?
252 183C 94 27 BNZ JU71 No, so no promotion
253 183E 7F LIS H'F' and the king row?
254 183F 15 SL 4
255 1840 90 06 BR JUM5 Promotion indicated, no double jum
256 1842 25 1B JUM4 CI O'33' Is this byte 3?
257 1844 94 1F BNZ JU71 No, so no promotion
258 1846 7F LIS H'F' and the king row?
259 1847 F3 JUM5 NS 3
260 1848 84 1B BZ JU71 No
261 184A 71 LIS H'1' 1 for promotion
262 184B 52 LR 2,A It was 0
263 184C 50 LR 0,A Credit for promotion
264 184D 56 LR 6,A Used in FIND for no continuation
265 184E 64 JUM6 LISU KLOC Get to King position
266 184F 4C LR A,S
267 1850 C3 AS 3 Put down the king
268 1851 5C LR S,A
269 1852 70 CLR
270 1853 E0 XS 0 Was there a promotion?
271 1854 84 0F BZ JU71 No
272 1856 64 LISU 4
273 1857 6E LISL 6
274 1858 4C LR A,S
275 1859 1F INC Add for promotion
276 185A 5C LR S,A
277 185B 90 05 BR JUM9 Can be no continuation if promotio
278 185D 70 JUM7 CLR
279 185E E0 XS 0 Should we check for a double jump?
280 185F 84 04 BZ JU71 Yes, a 0 means no promotion
281 1861 29 18 E9 JUM9 JMP FORE
282 * Set up conditions to try to find a continuation
283 1864 4B JU71 LR A,HL
284 1865 14 SR 4
285 1866 25 0B CI H'B' Is there room? (COULD BE SET 1 HI
286 1868 91 F8 BM JUM9 No
287 186A 25 01 CI H'1' Is this a player's board?
288 186C 94 0C BNZ JU78 No
289 186E 2A 0E D0 DCI PLMV Yes, restart PLMV
290 1871 70 CLR
291 1872 17 ST
292 1873 2A 0C 2F DCI CFLG Zero this as
293 1876 17 ST safety precaution
294 1877 90 32 BR JU77 and keep to this level
295 1879 2A 0F B0 JU78 DCI MOBS Get move count
296 187C 24 FE AI -H'2' for current board
297 187E 8E ADC
298 187F 16 LM
299 1880 52 LR 2,A Save temporarily
300 1881 70 CLR Mobility for passed board
301 1882 17 ST to 0 to prevent compression
302 1883 10 LR DC,H
303 1884 20 1C LI H'1C' Get to byte location
304 1886 8E ADC in the "passed board" position
305 1887 43 LR A,3 Save destination info
306 1888 17 ST the move byte
307 1889 44 LR A,4
308 188A 17 ST and the byte #
309 188B 70 CLR
310 188C 18 COM and a flag of -1
311 188D 17 ST in the ACTM position
312 188E 42 LR A,2 and # of moves in PASM
313 188F 17 ST
314 1890 4B LR A,HL
315 1891 14 SR 4
316 1892 2A 0E F0 DCI SCOR Advance score
317 1895 24 FE AI -H'2' Scor not saved for HL=1
318 1897 13 SL 1
319 1898 8E ADC from current board
320 1899 0E LR Q,DC
321 189A 2C XDC
322 189B 0F LR DC,Q
323 189C 74 LIS H'4'
324 189D 8E ADC
325 189E 2C XDC
326 189F 16 LM
327 18A0 2C XDC
328 18A1 17 ST
329 18A2 2C XDC
330 18A3 16 LM
331 18A4 2C XDC
332 18A5 17 ST
333 18A6 72 LIS H'2' Copy data two blocks forward
334 18A7 15 SL 4
335 18A8 CB AS HL
336 18A9 5B LR HL,A
337 18AA 10 JU77 LR DC,H
338 18AB 28 16 7D PI SCRD SC to RAM direct
339 18AE 28 1E FF PI EMPT Re-do to reflect changes
340 18B1 43 LR A,3 Save destination
341 18B2 51 LR 1,A as mask for FIND
342 18B3 70 CLR
343 18B4 52 LR 2,A
344 18B5 56 LR 6,A
345 18B6 29 1B 0E JMP RFJ Find continuations if any
346 * NORM FORE
347 *Now make normal move
348 18B9 10 NORM LR DC,H Back in step
349 18BA 70 CLR
350 18BB 50 LR 0,A Flag for no promotion
351 18BC 63 LISU PLOC Get back to Active pieces
352 18BD 4C LR A,S LISL still OK
353 18BE C3 AS 3
354 18BF 5C LR S,A Put in moved piece
355 18C0 42 LR A,2 Was it a king
356 18C1 F2 NS 2
357 18C2 94 18 BNZ NOM6 Yes so don't promote but do put ki
358 18C4 72 LIS H'2'
359 18C5 F5 NS 5 Test for direction
360 18C6 0A LR A,IS
361 18C7 84 09 BZ NOM4 Is it going forward?
362 18C9 25 18 CI O'30' Did it get to the byte 0?
363 18CB 94 1D BNZ FORE No
364 18CD 7F LIS H'F' and in king row?
365 18CE 15 SL 4
366 18CF 90 06 BR NOM5 Mark for promotion
367 18D1 25 1B NOM4 CI O'33' Did it get to byte 3?
368 18D3 94 15 BNZ FORE No
369 18D5 7F LIS H'F' and in king row?
370 18D6 F3 NOM5 NS 3
371 18D7 84 11 BZ FORE No
372 18D9 71 LIS H'1'
373 18DA 50 LR 0,A A promotion flag
374 18DB 64 NOM6 LISU KLOC Now get to king byte
375 18DC 4C LR A,S Get corresponding king byte for de
376 18DD C3 AS 3 Insert king
377 18DE 5C LR S,A And replace byte
378 18DF 70 CLR
379 18E0 C0 AS 0
380 18E1 84 07 BZ FORE
381 18E3 20 26 LI ACTM Get to active material location
382 18E5 0B LR IS,A
383 18E6 4C LR A,S
384 18E7 1F INC Credit for promotion
385 18E8 5C LR S,A
386 18E9 2A 0C 2F FORE DCI CFLG Have we compacted?
387 18EC 0E LR Q,DC
388 18ED 16 LM
389 18EE 50 LR 0,A Save value to add
390 18EF 0F LR DC,Q
391 18F0 70 CLR and clear
392 18F1 17 ST
393 18F2 4B LR A,HL Where are we?
394 18F3 14 SR 4
395 18F4 25 01 CI H'1'
396 18F6 94 04 BNZ FOR8
397 18F8 29 19 91 JMP FOR5 Player's move has been made
398 18FB 47 FOR8 LR A,7
399 18FC 18 COM Change color
400 18FD 57 LR 7,A
401 18FE 71 LIS H'1'
402 18FF 15 SL 4
403 1900 CB AS HL
404 1901 5B LR HL,A
405 1902 10 LR DC,H GET back in step
406 1903 28 1A 18 PI SCRA Prepare for normal advance
407 1906 4B LR A,HL Can we advance score?
408 1907 14 SR 4
409 1908 25 03 CI H'3' Note HL has already been advanced
410 190A 91 0D BM FOR2 Advance score normally
411 190C 94 67 BNZ FOR4 Special case
412 190E 2A 0E F2 DCI SCOR+2
413 1911 20 C1 LI H'C1'
414 1913 17 ST
415 1914 1F INC
416 1915 17 ST
417 1916 90 5D BR FOR4 May still be a special case
418 1918 24 FE FOR2 AI -H'2' Scor not saved for HL=10
419 191A 13 SL 1 Scores take 2 bytes each so *2
420 191B 2A 0E F0 DCI SCOR
421 191E 8E ADC Current location
422 191F 0E LR Q,DC
423 1920 2C XDC
424 1921 0F LR DC,Q
425 1922 73 LIS H'3'
426 1923 18 COM Fast -H'4'
427 1924 8E ADC Get to earlier entry
428 1925 16 LM Copy it
429 1926 2C XDC
430 1927 17 ST
431 1928 2C XDC
432 1929 25 C1 CI H'C1'
433 192B 16 LM
434 192C 2C XDC
435 192D 94 04 BNZ FOR7
436 192F 1F INC Add 2 for win or lose reporting
437 1930 1F INC
438 1931 C0 AS 0
439 1932 17 FOR7 ST
440 * Compacting routine to save space
441 1933 2A 0E 3E DCI TRE3 Location of level 30 passed flag
442 1936 70 CLR
443 1937 8C XM
444 1938 91 38 BM FOR3 Don't compress in this case
445 193A 4B LR A,HL
446 193B 14 SR 4
447 193C 25 05 CI H'5' Room to compact?
448 193E 81 32 BP FOR3 No, let player make his next move
449 1940 24 FC AI -H'4' 2 back in MOB
450 1942 2A 0F B0 DCI MOBS Compacting possible only if but
451 1945 8E ADC single moves available for 2
452 1946 16 LM successive moves
453 1947 25 01 CI H'1' (a 0 excludes passed boards)
454 1949 94 27 BNZ FOR3 Not 1 move
455 194B 16 LM
456 194C 25 01 CI H'1'
457 194E 94 22 BNZ FOR3 Not 1 move
458 1950 4B LR A,HL
459 1951 14 SR 4
460 1952 24 FC AI -H'4' Back 2 levels
461 1954 13 SL 1
462 1955 2A 0E F0 DCI SCOR
463 1958 8E ADC
464 1959 16 LM
465 195A 25 C1 CI H'C1'
466 195C 94 06 BNZ FORY
467 195E 0E LR Q,DC
468 195F 72 LIS H'2'
469 1960 88 AM
470 1961 0F LR DC,Q
471 1962 17 ST
472 1963 71 FORY LIS H'1'
473 1964 18 COM Back up 2 levels
474 1965 15 SL 4
475 1966 CB AS HL
476 1967 5B LR HL,A
477 1968 2A 0C 2F DCI CFLG
478 196B 72 LIS H'2'
479 196C 17 ST Set flag for SCOR check
480 196D 10 LR DC,H GET back in step
481 196E 28 1A 18 PI SCRA Prepare for normal advance
482 1971 29 1A F1 FOR3 JMP FIND Go forward normally
483 1974 2A 0C 2A FOR4 DCI SELX
484 1977 0E LR Q,DC
485 1978 16 LM
486 1979 25 01 CI H'1'
487 197B 91 F5 BM FOR3 Normal play
488 197D 1F INC Book or random move has been made
489 197E 0F LR DC,Q
490 197F 17 ST so count this as a move
491 1980 70 CLR Clear start of PLMV list for
492 1981 2A 0E D0 DCI PLMV listing player's possible moves
493 1984 17 ST
494 1985 10 LR DC,H
495 1986 2C XDC
496 1987 2A 0E 10 DCI TREE Prepare for TRAN
497 198A 11 LR H,DC
498 198B 28 1A 34 PI RARA RAM to RAM transfer
499 198E 29 1A F1 JMP FIND FIND exits to PMOV when HL is H'10
500 1991 28 13 2B FOR5 PI BORD Show board after players move
501 1994 74 LIS H'4' "MY MOVE"
502 1995 50 LR 0,A
503 1996 28 12 49 PI WMC
504 1999 2A 0E F0 DCI SCOR Start scores off at H'C000'
505 199C 20 C1 LI H'C1' so that CM's will always work
506 199E 17 ST
507 199F 17 ST
508 19A0 17 ST
509 19A1 1F INC
510 19A2 17 ST
511 19A3 47 LR A,7
512 19A4 18 COM Change color
513 19A5 57 LR 7,A
514 19A6 71 LIS H'1'
515 19A7 15 SL 4
516 19A8 CB AS HL
517 19A9 5B LR HL,A
518 19AA 10 LR DC,H Advance H
519 19AB 28 1A 18 PI SCRA SC to RA with sides reversed
520 19AE 10 LR DC,H
521 19AF 28 1A 07 PI RASC RA to SC preparing for a normal mo
522 19B2 2A 0C 2A DCI SELX
523 19B5 0E LR Q,DC
524 19B6 16 LM
525 19B7 1F INC Add 1 to move count
526 19B8 0F LR DC,Q
527 19B9 17 ST
528 19BA 25 01 CI H'1'
529 19BC 84 04 BZ FOR6 Use stored move
530 19BE 29 1A F1 JMP FIND Go find normal reply
531 19C1 62 FOR6 LISU 2 Get random number
532 19C2 6D LISL 5
533 19C3 73 LIS H'3'
534 19C4 FC NS S 0 to 3 random number
535 19C5 50 LR 0,A
536 19C6 12 SR 1
537 19C7 51 LR 1,A 0 to 1 random number
538 19C8 71 LIS H'1'
539 19C9 F0 NS 0
540 19CA 50 LR 0,A 2nd 0 to 1 random number
541 * Machine to make 2nd move from book
542 19CB 2A 0C 25 DCI BKMV Get stored move munber
543 19CE 16 LM
544 19CF 13 SL 1 X2, 2 entries for each input move
545 19D0 C0 AS 0 Random choice between them
546 19D1 2A 1F 24 DCI BOK2 Stored table of book replies
547 19D4 8E ADC
548 19D5 16 LM Get reply number
549 19D6 50 LR 0,A
550 19D7 70 CLR Use second number to select which
551 19D8 E1 XS 1
552 19D9 40 LR A,0
553 19DA 84 02 BZ BMV2
554 19DC 14 SR 4
555 19DD 21 07 BMV2 NI H'7'
556 19DF 50 LR 0,A The final selection
557 19E0 2A 1A 02 DCI REDM Possible Red moves
558 19E3 16 BM17 LM Get byte record
559 19E4 51 LR 1,A
560 19E5 41 BM18 LR A,1
561 19E6 F1 NS 1
562 19E7 94 04 BNZ BM19 Is this byte exhausted?
563 19E9 16 LM Step over byte info
564 19EA 90 F8 BR BM17 Go to next byte record
565 19EC 52 BM19 LR 2,A
566 19ED 24 FF AI H'FF' Subtract 1
567 19EF F1 NS 1
568 19F0 51 LR 1,A byte less rightmost bit
569 19F1 E2 XS 2 This leaves 1 bit in A
570 19F2 30 DS 0
571 19F3 81 F1 BP BM18
572 19F5 56 LR 6,A Save the byte bit
573 19F6 16 LM Get the byte info
574 19F7 54 LR 4,A The byte indicator
575 19F8 10 LR DC,H
576 19F9 7C LIS H'C'
577 19FA 8E ADC
578 19FB 46 LR A,6
579 19FC 17 ST
580 19FD 44 LR A,4
581 19FE 17 ST
582 19FF 29 17 90 JMP SELE
583 *-*-*- Initial moves for red
584 1A02 07 REDM DC B'00000111' 3 pieces
585 1A03 0A DC B'00001010' Byte 2, RB
586 1A04 0F DC B'00001111' 4 pieces
587 1A05 0B DC B'00001011' Byte 2, LB
588 1A06 00 DC H'00'
589 * RASC SCRA FKT STMV
590 *-*-*- RASC RAM to SC transfer
591 1A07 08 RASC LR K,P RAM to SC
592 1A08 63 LISU PLOC ←SC buffer with Active and Passive
593 1A09 68 LISL 0
594 1A0A 16 RAS2 LM
595 1A0B 5D LR I,A
596 1A0C 8F FD BR7 RAS2
597 1A0E 16 LM
598 1A0F 5D LR I,A
599 1A10 64 LISU KLOC
600 1A11 16 RAS3 LM
601 1A12 5D LR I,A
602 1A13 8F FD BR7 RAS3
603 1A15 16 LM
604 1A16 5D LR I,A
605 1A17 0C PK
606 * SCRA SC to RAM with side reversal
607 1A18 08 SCRA LR K,P SC to RAM for side reversal
608 1A19 63 LISU PLOC
609 1A1A 6C LISL 4
610 1A1B 78 LIS H'8'
611 1A1C 50 LR 0,A
612 1A1D 4D SCR1 LR A,I
613 1A1E 17 ST
614 1A1F 30 DS 0
615 1A20 94 FC BNZ SCR1
616 1A22 64 LISU KLOC
617 1A23 68 LISL 0
618 1A24 74 LIS H'4'
619 1A25 50 LR 0,A
620 1A26 4D SCR2 LR A,I
621 1A27 17 ST
622 1A28 30 DS 0
623 1A29 94 FC BNZ SCR2
624 1A2B 70 CLR
625 1A2C 17 ST
626 1A2D 17 ST
627 1A2E 6F LISL 7
628 1A2F 4E LR A,D
629 1A30 17 ST
630 1A31 4E LR A,D
631 1A32 17 ST
632 1A33 0C PK
633 *-*-*- RAM TO RAM, source start in DC1, destination start in DC0,
634 * Uses R0
635 1A34 08 RARA LR K,P
636 1A35 71 LIS H'1'
637 1A36 15 SL 4
638 1A37 50 LR 0,A
639 1A38 2C RAR2 XDC
640 1A39 16 LM
641 1A3A 2C XDC
642 1A3B 17 ST
643 1A3C 30 DS 0
644 1A3D 94 FA BNZ RAR2
645 1A3F 0C PK
646 *-*-*- Test if Kings only can move
647 1A40 08 FKT LR K,P
648 1A41 70 CLR
649 1A42 C7 AS 7
650 1A43 94 09 BNZ FK1 Only kings in this direction
651 1A45 70 FKT2 CLR
652 1A46 E3 XS 3
653 1A47 0C PK Normal pieces OK
654 1A48 08 BKT LR K,P
655 1A49 70 CLR
656 1A4A C7 AS 7 Test sides for backward move
657 1A4B 94 F9 BNZ FKT2 NORMAL pieces can move
658 1A4D 72 FK1 LIS H'2'
659 1A4E 15 SL 4
660 1A4F C4 AS 4
661 1A50 0B LR IS,A KINGS only can move
662 1A51 4C LR A,S
663 1A52 F3 NS 3
664 1A53 53 LR 3,A
665 1A54 0C PK
666 *Subroutine to add to MOBILITY, and to store MOVE and FLAG bytes i
667 1A55 08 STMV LR K,P
668 1A56 4B LR A,HL
669 1A57 14 SR 4
670 1A58 25 01 CI H'01' Is this the player's board
671 1A5A 94 19 BNZ STM3 No
672 1A5C 2A 0E D0 DCI PLMV Player's moves stored separately
673 1A5F 70 STM0 CLR
674 1A60 8C XM
675 1A61 84 04 BZ STM1 Find empty space
676 1A63 16 LM Skip info space
677 1A64 90 FA BR STM0 Try again
678 1A66 70 STM1 CLR Back up
679 1A67 18 COM
680 1A68 8E ADC
681 1A69 43 LR A,3
682 1A6A 17 ST
683 1A6B 44 LR A,4
684 1A6C 13 SL 1
685 1A6D 13 SL 1
686 1A6E C5 AS 5
687 1A6F 17 ST
688 1A70 70 CLR
689 1A71 17 ST Store 0 as stop
690 1A72 90 10 BR STM2
691 1A74 70 STM3 CLR
692 1A75 E2 XS 2 To set status byte
693 1A76 94 0C BNZ STM2 One is already stored
694 1A78 10 LR DC,H Get back in step
695 1A79 7C LIS H'C' To get to MOVE byte
696 1A7A 8E ADC
697 1A7B 43 STM4 LR A,3 Get move byte
698 1A7C 17 ST Store it in RAM
699 1A7D 44 LR A,4 Get the byte pointer
700 1A7E 13 SL 1
701 1A7F 13 SL 1
702 1A80 C5 AS 5
703 1A81 17 ST Put this into RAM
704 1A82 10 LR DC,H May be necessary
705 1A83 70 STM2 CLR
706 1A84 50 LR 0,A To accumulate count
707 1A85 43 LR A,3
708 1A86 30 STM5 DS 0
709 1A87 24 FF AI H'FF'
710 1A89 F3 NS 3 Removes rightmost bit
711 1A8A 53 LR 3,A
712 1A8B 94 FA BNZ STM5
713 1A8D 40 LR A,0
714 1A8E 18 COM
715 1A8F 1F INC
716 1A90 C2 AS 2 Add in previous count
717 1A91 52 LR 2,A
718 1A92 0C PK
719 * NEXT FIND RFJ LFJ RBJ LBJ
720 1A93 28 1E FF NEXT PI EMPT Needs redoing if came to SELE via
721 1A96 10 LR DC,H
722 1A97 4B LR A,HL
723 1A98 14 SR 4
724 1A99 25 03 CI H'3'
725 1A9B 81 1E BP NEXX Can not be a continuation
726 1A9D 73 LIS H'3' Look to earlier board data
727 1A9E 18 COM Fast -4
728 1A9F 8E ADC
729 1AA0 16 LM
730 1AA1 51 LR 1,A Get move byte just in case
731 1AA2 16 LM
732 1AA3 54 LR 4,A and byte info
733 1AA4 70 CLR
734 1AA5 52 LR 2,A
735 1AA6 8C XM Now look at ACTM
736 1AA7 81 12 BP NEXX Not a continuation board
737 1AA9 10 LR DC,H
738 1AAA 7D LIS H'D'
739 1AAB 8E ADC
740 1AAC 73 LIS H'3' Get last used direction
741 1AAD 8A NM
742 1AAE 1F INC
743 1AAF 25 03 CI H'3'
744 1AB1 91 15 BM NEXY Last direction used
745 1AB3 55 LR 5,A
746 1AB4 70 CLR
747 1AB5 18 COM
748 1AB6 56 LR 6,A Set continuation flag
749 1AB7 29 1B 68 JMP RBJ0
750 1ABA 10 NEXX LR DC,H
751 1ABB 7D LIS H'D' Last used byte info
752 1ABC 8E ADC
753 1ABD 16 LM
754 1ABE 55 LR 5,A
755 1ABF 21 0F NI H'F'
756 1AC1 1F INC
757 1AC2 50 LR 0,A
758 1AC3 25 0F CI H'F' Is this the last byte and directio
759 1AC5 81 04 BP NEXA
760 1AC7 29 1D 35 NEXY JMP AFT Yes, so back up
761 1ACA 10 NEXA LR DC,H
762 1ACB 71 LIS H'1' Set to 1 for normal back-up
763 1ACC 56 LR 6,A
764 1ACD 70 CLR
765 1ACE 18 COM
766 1ACF 51 LR 1,A All pieces allowed to move
767 1AD0 10 LR DC,H
768 1AD1 40 LR A,0
769 1AD2 12 SR 1
770 1AD3 12 SR 1
771 1AD4 21 03 NI H'3'
772 1AD6 54 LR 4,A
773 1AD7 45 LR A,5
774 1AD8 25 0F CI H'F'
775 1ADA 73 LIS H'3'
776 1ADB 91 0B BM NEXJ Jumps required
777 1ADD F0 NS 0
778 1ADE 55 LR 5,A
779 1ADF 84 04 BZ NEN0
780 1AE1 29 1C AA JMP RBN0
781 1AE4 29 1C 5E NEN0 JMP RFN
782 1AE7 F0 NEXJ NS 0
783 1AE8 55 LR 5,A
784 1AE9 84 04 BZ NEJ0
785 1AEB 29 1B 68 JMP RBJ0
786 1AEE 29 1B 0E NEJ0 JMP RFJ
787 *We enter here on going forward
788 1AF1 10 FIND LR DC,H
789 1AF2 4B LR A,HL
790 1AF3 14 SR 4
791 1AF4 25 02 CI H'2'
792 1AF6 94 0B BNZ FIN1
793 1AF8 7E LIS H'E' Compute ACTM+PASM+9
794 1AF9 8E ADC
795 1AFA 79 LIS H'9' Constant term
796 1AFB 88 AM
797 1AFC 88 AM
798 1AFD 2A 0C 2C DCI AP20 Used by EVAL to compute MAT
799 1B00 17 ST
800 1B01 10 LR DC,H
801 1B02 28 1A 07 FIN1 PI RASC Get board into SC
802 1B05 28 1E FF PI EMPT Compute the empty squares
803 1B08 70 CLR
804 1B09 54 LR 4,A Start with byte 0
805 1B0A 52 LR 2,A Mobility count and move-found flag
806 1B0B 56 LR 6,A So all moves will be found
807 1B0C 18 COM
808 1B0D 51 LR 1,A To find all possible jump moves
809 1B0E 20 18 RFJ LI ISA Active pieces
810 1B10 C4 AS 4 Add byte off-set
811 1B11 0B LR IS,A Get to byte
812 1B12 4C LR A,S
813 1B13 F1 NS 1 FF if normal, 1 bit only for conti
814 1B14 53 LR 3,A 3 used to develop final byte
815 1B15 28 1A 40 PI FKT Any forward moving pieces?
816 1B18 84 56 BZ RBJ No, look to backward moving
817 1B1A 20 2A LI ISE+1 Look to empty squares forward
818 1B1C C4 AS 4 Add byte off-set
819 1B1D 0B LR IS,A Destination byte location
820 1B1E 4C LR A,S
821 1B1F 12 SR 1
822 1B20 F3 NS 3
823 1B21 53 LR 3,A Only pieces that have place to lan
824 1B22 20 1C LI ISP Passive pieces
825 1B24 C4 AS 4
826 1B25 0B LR IS,A
827 1B26 4D LR A,I Look to RF passive pieces forward
828 1B27 15 SL 4 In front of left-most bits
829 1B28 50 LR 0,A
830 1B29 4C LR A,S
831 1B2A 14 SR 4 In front of right-most bits
832 1B2B 12 SR 1
833 1B2C C0 AS 0
834 1B2D F3 NS 3
835 1B2E 53 LR 3,A Pieces that can jump RF
836 1B2F 84 0B BZ LFJ None was found
837 1B31 71 LIS H'1' The RFJ direction and J indicator
838 1B32 15 SL 4
839 1B33 55 LR 5,A
840 1B34 28 1A 55 PI STMV Store move byte and info
841 1B37 70 CLR
842 1B38 C6 AS 6 Recall indicator
843 1B39 94 2C BNZ LFJ2
844 1B3B 20 18 LFJ LI ISA
845 1B3D C4 AS 4 Add byte off-set
846 1B3E 0B LR IS,A Get to initial byte
847 1B3F 4C LR A,S
848 1B40 F1 NS 1 FF if normal, 1 bit only for conti
849 1B41 53 LR 3,A
850 1B42 28 1A 40 PI FKT
851 1B45 20 2A LI ISE+1 Empty squares forward
852 1B47 C4 AS 4
853 1B48 0B LR IS,A
854 1B49 4C LR A,S
855 1B4A 13 SL 1
856 1B4B F3 NS 3
857 1B4C 53 LR 3,A Only pieces that have a place to l
858 1B4D 20 1C LI ISP
859 1B4F C4 AS 4
860 1B50 0B LR IS,A
861 1B51 4D LR A,I
862 1B52 15 SL 4
863 1B53 13 SL 1
864 1B54 50 LR 0,A
865 1B55 4C LR A,S
866 1B56 14 SR 4
867 1B57 C0 AS 0
868 1B58 F3 NS 3
869 1B59 53 LR 3,A Pieces that can jump LF
870 1B5A 84 14 BZ RBJ
871 1B5C 20 11 LI H'11' The LFJ direction and J indicator
872 1B5E 55 LR 5,A
873 1B5F 28 1A 55 PI STMV
874 1B62 70 CLR
875 1B63 E6 XS 6
876 1B64 84 0A BZ RBJ
877 1B66 90 33 LFJ2 BR RBJ2
878 1B68 45 RBJ0 LR A,5
879 1B69 25 02 CI H'2' Which direction, 1, 2, or 3?
880 1B6B 91 30 BM LBJ It was a 3
881 1B6D 94 CD BNZ LFJ It was a 1
882 1B6F 20 18 RBJ LI ISA
883 1B71 C4 AS 4 Add byte off-set
884 1B72 0B LR IS,A Get to initial byte
885 1B73 4C LR A,S
886 1B74 F1 NS 1 FF if normal, 1 bit only for conti
887 1B75 53 LR 3,A
888 1B76 28 1A 48 PI BKT Any backward moving pieces?
889 1B79 84 50 BZ FJ1 No
890 1B7B 20 28 LI ISE-1 Look to empty squares backward
891 1B7D C4 AS 4
892 1B7E 0B LR IS,A
893 1B7F 4C LR A,S
894 1B80 12 SR 1
895 1B81 F3 NS 3
896 1B82 53 LR 3,A
897 1B83 20 1B LI ISP-1 Look to passive pieces backward
898 1B85 C4 AS 4
899 1B86 0B LR IS,A
900 1B87 4D LR A,I
901 1B88 15 SL 4
902 1B89 50 LR 0,A
903 1B8A 4C LR A,S
904 1B8B 14 SR 4
905 1B8C 12 SR 1
906 1B8D C0 AS 0
907 1B8E F3 NS 3
908 1B8F 53 LR 3,A Pieces that can jump RB
909 1B90 84 0B BZ LBJ
910 1B92 20 12 LI H'12' The RBJ direction and J indicator
911 1B94 55 LR 5,A
912 1B95 28 1A 55 PI STMV
913 1B98 70 CLR
914 1B99 E6 XS 6
915 1B9A 94 2C RBJ2 BNZ LBJ2
916 1B9C 20 18 LBJ LI ISA
917 1B9E C4 AS 4 Add byte off-set
918 1B9F 0B LR IS,A Get to initial byte
919 1BA0 4C LR A,S
920 1BA1 F1 NS 1 FF if normal, 1 bit only for conti
921 1BA2 53 LR 3,A
922 1BA3 28 1A 48 PI BKT
923 1BA6 20 28 LI ISE-1 Empty squares backward
924 1BA8 C4 AS 4
925 1BA9 0B LR IS,A
926 1BAA 4C LR A,S
927 1BAB 13 SL 1
928 1BAC F3 NS 3
929 1BAD 53 LR 3,A
930 1BAE 20 1B LI ISP-1 Look to passive pieces backward
931 1BB0 C4 AS 4
932 1BB1 0B LR IS,A
933 1BB2 4D LR A,I
934 1BB3 15 SL 4
935 1BB4 13 SL 1
936 1BB5 50 LR 0,A
937 1BB6 4C LR A,S
938 1BB7 14 SR 4
939 1BB8 C0 AS 0
940 1BB9 F3 NS 3
941 1BBA 53 LR 3,A Pieces that can jump LB
942 1BBB 84 0E BZ FJ1
943 1BBD 20 13 LI H'13' The RBJ direction and J indicator
944 1BBF 55 LR 5,A
945 1BC0 28 1A 55 PI STMV
946 1BC3 70 CLR
947 1BC4 E6 XS 6
948 1BC5 84 0D BZ FJ2 We want them all
949 1BC7 29 17 90 LBJ2 JMP SELE A successful NEXT
950 1BCA 70 FJ1 CLR No backward moves
951 1BCB E6 XS 6
952 1BCC 84 06 BZ FJ2 We want them all
953 1BCE 81 09 BP FJ3 Try next byte
954 1BD0 29 1D 35 JMP AFT A NEXT continuation failure
955 1BD3 41 FJ2 LR A,1 Was it a first continuation try?
956 1BD4 25 FF CI H'FF'
957 1BD6 94 0B BNZ FJ4 Yes
958 1BD8 44 FJ3 LR A,4 No, to next board byte
959 1BD9 1F INC
960 1BDA 21 03 NI H'3'
961 1BDC 54 LR 4,A
962 1BDD 84 48 BZ FJ9 There are no more
963 1BDF 29 1B 0E JMP RFJ Go round again for next byte
964 1BE2 70 FJ4 CLR A first continuation try
965 1BE3 E2 XS 2 Was it successful?
966 1BE4 84 11 BZ FJ5 No
967 * Successful continuation try
968 1BE6 4B LR A,HL
969 1BE7 14 SR 4
970 1BE8 25 05 CI H'5' Where are we?
971 1BEA 91 1C BM FJ7 Maybe can compact data
972 1BEC 25 01 CI H'1' A player's board
973 1BEE 94 42 BNZ FJ10 No
974 1BF0 28 13 2B PI BORD Show board
975 1BF3 29 12 29 JMP DJMP
976 * Unsuccessful continuation try
977 1BF6 4B FJ5 LR A,HL
978 1BF7 14 SR 4
979 1BF8 25 01 CI H'1' A player's board
980 1BFA 91 04 BM FJ6 No
981 1BFC 29 19 91 JMP FOR5 "MY MOVE" etc
982 1BFF 71 FJ6 LIS H'1' Back 2 levels
983 1C00 18 COM
984 1C01 15 SL 4
985 1C02 CB AS HL
986 1C03 5B LR HL,A
987 1C04 29 18 E9 JMP FORE
988 * A successful continuation that might be compacted
989 1C07 2A 0E 3E FJ7 DCI TRE3 Was 30 passed?
990 1C0A 70 CLR
991 1C0B 8C XM
992 1C0C 91 24 BM FJ10 No, dangerous to compress
993 1C0E 10 LR DC,H
994 1C0F 70 CLR
995 1C10 18 COM Back to PASM
996 1C11 8E ADC
997 1C12 16 LM
998 1C13 25 01 CI H'1' Other than 1 move?
999 1C15 94 1B BNZ FJ10 Yes so save this one here
1000 1C17 10 LR DC,H No, so we can move data
1001 1C18 2C XDC back by 2 levels
1002 1C19 71 LIS H'1' and so save space
1003 1C1A 18 COM A fast -2
1004 1C1B 15 SL 4
1005 1C1C CB AS HL
1006 1C1D 5B LR HL,A
1007 1C1E 10 LR DC,H
1008 1C1F 28 1A 34 PI RARA Fast RAM to RAM transfer
1009 1C22 4B LR A,HL
1010 1C23 14 SR 4
1011 1C24 90 1C BR FJ11
1012 * All bytes exhausted
1013 1C26 70 FJ9 CLR
1014 1C27 E2 XS 2
1015 1C28 94 08 BNZ FJ10 Jumps found
1016 1C2A 70 CLR
1017 1C2B E6 XS 6 Go to normal moves?
1018 1C2C 84 31 BZ RFN Yes
1019 1C2E 29 1D 35 JMP AFT No more jumps
1020 1C31 4B FJ10 LR A,HL
1021 1C32 14 SR 4
1022 1C33 25 0E CI H'E'
1023 1C35 91 1F BM FJ12 Too bad, out of space
1024 1C37 25 01 CI H'1'
1025 1C39 94 07 BNZ FJ11 Not player's FIND
1026 1C3B 28 13 2B PI BORD Show board with piece moved
1027 1C3E 29 11 16 JMP PMOV Init cursor and say "MUST JUMP"
1028 1C41 24 FE FJ11 AI -H'2'
1029 1C43 2A 0F B0 DCI MOBS
1030 1C46 8E ADC
1031 1C47 42 LR A,2
1032 1C48 17 ST
1033 1C49 10 LR DC,H Prepare for continuation
1034 1C4A 20 1E LI H'1E' To ACTM in passed board
1035 1C4C 8E ADC These data are over-
1036 1C4D 70 CLR written if no continuation
1037 1C4E 18 COM A -1 signals
1038 1C4F 17 ST a continuation
1039 1C50 42 LR A,2 A 1 here signals
1040 1C51 17 ST a single jump case
1041 1C52 29 17 90 JMP SELE
1042 1C55 64 FJ12 LISU KLOC Correct PASM and stop
1043 1C56 6F LISL H'7'
1044 1C57 71 LIS H'1' Allow for a piece capture
1045 1C58 18 COM A fast -2
1046 1C59 CC AS S
1047 1C5A 5C LR S,A
1048 1C5B 29 1E 17 JMP EVAL
1049 * RFN LFN RBN LBN NORF NORT
1050 1C5E 20 18 RFN LI ISA
1051 1C60 C4 AS 4 Add byte off-set
1052 1C61 0B LR IS,A Get to initial byte
1053 1C62 4C LR A,S
1054 1C63 53 LR 3,A
1055 1C64 28 1A 40 PI FKT
1056 1C67 84 49 BZ RBN
1057 1C69 20 29 LI ISE Start of empty region
1058 1C6B C4 AS 4 Add off-set
1059 1C6C 0B LR IS,A
1060 1C6D 4D LR A,I Look to RF empty squares
1061 1C6E 15 SL 4
1062 1C6F 50 LR 0,A
1063 1C70 4C LR A,S
1064 1C71 14 SR 4
1065 1C72 12 SR 1
1066 1C73 C0 AS 0
1067 1C74 F3 NS 3
1068 1C75 53 LR 3,A Pieces that can move RF
1069 1C76 84 0D BZ LFN
1070 1C78 70 CLR
1071 1C79 55 LR 5,A
1072 1C7A 28 1A 55 PI STMV
1073 1C7D 70 CLR
1074 1C7E E6 XS 6
1075 1C7F 84 04 BZ LFN
1076 1C81 29 17 90 JMP SELE
1077 1C84 20 18 LFN LI ISA
1078 1C86 C4 AS 4 Add byte off-set
1079 1C87 0B LR IS,A Get to initial byte
1080 1C88 4C LR A,S
1081 1C89 53 LR 3,A
1082 1C8A 28 1A 40 PI FKT
1083 1C8D 84 23 BZ RBN
1084 1C8F 20 29 LI ISE Start of empty region
1085 1C91 C4 AS 4 Add off-set
1086 1C92 0B LR IS,A
1087 1C93 4D LR A,I Look to LF empty squares
1088 1C94 15 SL 4
1089 1C95 13 SL 1
1090 1C96 50 LR 0,A
1091 1C97 4C LR A,S
1092 1C98 14 SR 4
1093 1C99 C0 AS 0
1094 1C9A F3 NS 3
1095 1C9B 53 LR 3,A Pieces that can move LF
1096 1C9C 84 14 BZ RBN
1097 1C9E 71 LIS H'1'
1098 1C9F 55 LR 5,A
1099 1CA0 28 1A 55 PI STMV
1100 1CA3 70 CLR
1101 1CA4 E6 XS 6
1102 1CA5 84 0B BZ RBN
1103 1CA7 29 17 90 JMP SELE
1104 1CAA 45 RBN0 LR A,5
1105 1CAB 25 02 CI H'2' Which direction 1, 2 or 3?
**OPERATOR SYNTAX LINE # 1106
1106
1107 1CAD 91 26 BM LBN It was a 3
1108 1CAF 94 D4 BNZ LFN It was a 1
1109 1CB1 20 18 RBN LI ISA
1110 1CB3 C4 AS 4 Add byte off-set
1111 1CB4 0B LR IS,A Get to initial byte
1112 1CB5 4C LR A,S
1113 1CB6 53 LR 3,A
1114 1CB7 28 1A 48 PI BKT
1115 1CBA 84 3F BZ NORT
1116 1CBC 20 28 LI ISE-1
1117 1CBE C4 AS 4 Add off-set
1118 1CBF 0B LR IS,A
1119 1CC0 4D LR A,I Look to RB empty squares
1120 1CC1 15 SL 4
1121 1CC2 50 LR 0,A
1122 1CC3 4C LR A,S
1123 1CC4 14 SR 4
1124 1CC5 12 SR 1
1125 1CC6 C0 AS 0
1126 1CC7 F3 NS 3
1127 1CC8 53 LR 3,A Pieces that can move RB
1128 1CC9 84 0A BZ LBN None can
1129 1CCB 72 LIS H'2'
1130 1CCC 55 LR 5,A
1131 1CCD 28 1A 55 PI STMV
1132 1CD0 70 CLR
1133 1CD1 E6 XS 6
1134 1CD2 94 24 BNZ NORF
1135 1CD4 20 18 LBN LI ISA
1136 1CD6 C4 AS 4 Add byte off-set
1137 1CD7 0B LR IS,A Get to initial byte
1138 1CD8 4C LR A,S
1139 1CD9 53 LR 3,A
1140 1CDA 28 1A 48 PI BKT
1141 1CDD 84 1C BZ NORT
1142 1CDF 20 28 LI ISE-1
1143 1CE1 C4 AS 4 Add off-set
1144 1CE2 0B LR IS,A
1145 1CE3 4D LR A,I Look to LB empty squares
1146 1CE4 15 SL 4
1147 1CE5 13 SL 1
1148 1CE6 50 LR 0,A
1149 1CE7 4C LR A,S
1150 1CE8 14 SR 4
1151 1CE9 C0 AS 0
1152 1CEA F3 NS 3
1153 1CEB 53 LR 3,A Pieces that can move LB
1154 1CEC 84 0D BZ NORT
1155 1CEE 73 LIS H'3'
1156 1CEF 55 LR 5,A
1157 1CF0 28 1A 55 PI STMV
1158 1CF3 70 CLR
1159 1CF4 E6 XS 6
1160 1CF5 84 04 BZ NORT
1161 1CF7 29 17 90 NORF JMP SELE
1162 *We get here if we want to compute mobility and also if no moves f
1163 1CFA 44 NORT LR A,4
1164 1CFB 1F INC
1165 1CFC 21 03 NI H'3'
1166 1CFE 54 LR 4,A
1167 1CFF 84 04 BZ NOR0
1168 1D01 29 1C 5E JMP RFN Go round again for next byte
1169 1D04 70 NOR0 CLR
1170 1D05 E2 XS 2 Get mobility count
1171 1D06 84 2E BZ AFT No moves found
1172 1D08 4B NOR1 LR A,HL Where are we?
1173 1D09 14 SR 4 Get Ply number
1174 1D0A 25 01 CI H'1'
1175 1D0C 94 07 BNZ NOR2 Checking for possible player's mov
1176 1D0E 28 13 2B PI BORD Put up board for player
1177 1D11 29 11 16 JMP PMOV Yes, so let him move
1178 1D14 25 0D NOR2 CI H'D' Are we out of space?
1179 1D16 91 1B BM NOR4 Yes
1180 1D18 24 FE AI -H'2' To index MOBS
1181 1D1A 50 LR 0,A
1182 1D1B 2A 0C 28 DCI PLY0 Neg. of allowed MOB sum
1183 1D1E 16 LM
1184 1D1F 2A 0F B0 DCI MOBS
1185 1D22 90 04 BR NOR5
1186 1D24 88 NOR3 AM Add up mobilities
1187 1D25 24 FF AI -H'1' So single jumps will not count
1188 1D27 30 NOR5 DS 0
1189 1D28 81 FB BP NOR3
1190 1D2A C2 AS 2 Add in the current one
1191 1D2B 81 06 BP NOR4 Time to stop
1192 1D2D 42 LR A,2
1193 1D2E 17 ST Save latest mobility
1194 1D2F 29 17 90 JMP SELE and go on
1195 1D32 29 1E 17 NOR4 JMP EVAL Evaluate
1196 * AFT
1197 *MAT EQU H'0' Register used for Material Adv. t
1198 *POT EQU H'6' Register used for Positional Adv.
1199 *Defined earlier
1200 HLS EQU H'4' Register to save HL off-set
1201 *No more moves found so time to back up
1202 1D35 4B AFT LR A,HL Prepare to back up
1203 1D36 14 SR 4
1204 1D37 25 02 CI H'2'
1205 1D39 94 13 BNZ AFT0 Not at end of tree search
1206 *Prepare for verification of player's reply
1207 1D3B 29 1F 4D JMP STOP
1208 1D3E 2A 0E 10 AFTT DCI TREE Back to player's board
1209 1D41 11 LR H,DC
1210 1D42 47 LR A,7
1211 1D43 18 COM Reverse sides
1212 1D44 57 LR 7,A
1213 1D45 2A 0E D0 DCI PLMV This space is also used by TREE ro
1214 1D48 70 CLR Clear first byte
1215 1D49 17 ST
1216 1D4A 29 1A F1 JMP FIND Get verification info for move
1217 1D4D 24 FE AFT0 AI -H'2' SCOR not saved for HL=10
1218 1D4F 13 SL 1 2 bytes per entry
1219 1D50 2A 0E F0 DCI SCOR
1220 1D53 8E ADC
1221 1D54 0E LR Q,DC
1222 1D55 16 LM
1223 1D56 50 LR MAT,A The current material advantage t
1224 1D57 16 LM
1225 1D58 56 LR POT,A The current positional term
1226 1D59 4B AFTE LR A,HL
1227 1D5A 25 30 CI H'30'
1228 1D5C 94 0A BNZ AFT1 Must test for double jump and cont
1229 1D5E 2A 0E F0 DCI SCOR
1230 1D61 0E LR Q,DC
1231 1D62 72 LIS H'2'
1232 1D63 51 LR 1,A So board can be saved if indicated
1233 1D64 29 1D C0 JMP AP2X Can handle with -2 passed case
1234 1D67 10 AFT1 LR DC,H EVAL enters here
1235 1D68 71 LIS H'1' Neg. ACTM for passed board
1236 1D69 18 COM Fast -2
1237 1D6A 8E ADC
1238 1D6B 70 CLR
1239 1D6C 8C XM Is -1 board passed
1240 1D6D 91 17 BM AFP1 Yes
1241 1D6F 20 EF LI H'EF' Is -2 board passed
1242 1D71 8E ADC
1243 1D72 70 CLR
1244 1D73 8C XM
1245 1D74 91 2B BM AFP2 Yes
1246 * -1 and -2 boards not passed
1247 1D76 4B LR A,HL
1248 1D77 14 SR 4
1249 1D78 24 FE AI -H'2'
1250 1D7A 51 LR 1,A Back 2 from current HL
1251 1D7B 24 FE AI -H'2'
1252 1D7D 13 SL 1
1253 1D7E 2A 0E F0 DCI SCOR
1254 1D81 8E ADC
1255 1D82 0E LR Q,DC
1256 1D83 90 24 BR AP2Y General routine can now handle
1257 * -1 board is passed so this was a multiple jump
1258 1D85 28 1D FC AFP1 PI AFBX
1259 1D88 71 LIS H'1'
1260 1D89 C1 AS 1
1261 1D8A 51 LR 1,A
1262 1D8B 72 LIS H'2'
1263 1D8C 8E ADC
1264 1D8D 0E LR Q,DC
1265 1D8E 40 LR A,MAT
1266 1D8F 8D CM
1267 1D90 91 07 BM AP12 Back score for sure
1268 1D92 94 0A BNZ AP13 Do not back score
1269 1D94 46 LR A,POT
1270 1D95 8D CM
1271 1D96 81 06 BP AP13 Do not back
1272 1D98 0F AP12 LR DC,Q Back score here
1273 1D99 40 LR A,MAT
1274 1D9A 17 ST
1275 1D9B 46 LR A,POT
1276 1D9C 17 ST
1277 1D9D 29 1D E5 AP13 JMP AF2B Back H by 2
1278 * -2 board is passed so backing into a continuation
1279 1DA0 28 1D FC AFP2 PI AFBX
1280 1DA3 41 LR A,1
1281 1DA4 25 01 CI H'1'
1282 1DA6 84 11 BZ AP22 Can't prune and may need to save b
1283 * Will handle normal both normal and backing into continuation cas
1284 1DA8 40 AP2Y LR A,MAT
1285 1DA9 8D CM
1286 1DAA 91 0D BM AP22 Can't prune
1287 1DAC 94 05 BNZ AP21 Can prune
1288 1DAE 46 LR A,POT
1289 1DAF 8D CM
1290 1DB0 91 07 BM AP22 Can't prune
1291 1DB2 41 AP21 LR A,1 Prune around multiple jump
1292 1DB3 15 SL 4
1293 1DB4 5B LR HL,A
1294 1DB5 29 1D F0 JMP ABBB Prepare for SELE
1295 1DB8 20 02 AP22 LI H'2' Forward 1 level
1296 1DBA 0F LR DC,Q
1297 1DBB 8E ADC
1298 1DBC 0E LR Q,DC We may need to save score
1299 1DBD 41 LR A,1
1300 1DBE 1F INC Keep HL value in step
1301 1DBF 51 LR 1,A
1302 1DC0 46 AP2X LR A,POT
1303 1DC1 18 COM
1304 1DC2 1F INC
1305 1DC3 56 LR POT,A
1306 1DC4 40 LR A,MAT
1307 1DC5 18 COM
1308 1DC6 1F INC
1309 1DC7 50 LR MAT,A
1310 1DC8 8D CM
1311 1DC9 91 07 BM AP23 Can back score
1312 1DCB 94 1D BNZ AF1B Can't back score
1313 1DCD 46 LR A,POT
1314 1DCE 8D CM
1315 1DCF 81 19 BP AF1B Can't back score
1316 1DD1 0F AP23 LR DC,Q Back score
1317 1DD2 40 LR A,MAT
1318 1DD3 17 ST
1319 1DD4 46 LR A,POT
1320 1DD5 17 ST
1321 1DD6 41 LR A,1 Should the board be saved?
1322 1DD7 25 02 CI H'2'
1323 1DD9 94 0F BNZ AF1B No, back 1 level in HL
1324 1DDB 10 LR DC,H Yes
1325 1DDC 2C XDC
1326 1DDD 2A 0E 10 DCI TREE
1327 1DE0 28 1A 34 PI RARA RAM to TAM transfer
1328 1DE3 90 05 BR AF1B and back 1 level
1329 * Final backing up
1330 1DE5 7E AF2B LIS H'E' Back 2 levels
1331 1DE6 15 SL 4 Fast H'E0'
1332 1DE7 90 06 BR AFBB
1333 1DE9 47 AF1B LR A,7 Reverse sides and back 1 level
1334 1DEA 18 COM
1335 1DEB 57 LR 7,A
1336 1DEC 7F LIS H'F' Back 1 level
1337 1DED 15 SL 4 Fast H'F0'
1338 1DEE CB AFBB AS HL
1339 1DEF 5B LR HL,A
1340 1DF0 10 ABBB LR DC,H
1341 1DF1 28 1A 07 PI RASC
1342 1DF4 2A 0C 2F DCI CFLG
1343 1DF7 70 CLR
1344 1DF8 17 ST Clear compacting flag
1345 1DF9 29 17 90 JMP SELE
1346 * Subroutine to back by 2's to non-passed board
1347 1DFC 08 AFBX LR K,P
1348 1DFD 20 FF LI -H'1'
1349 1DFF 8E ADC To ACTM location
1350 1E00 0E LR Q,DC
1351 1E01 0F AFB2 LR DC,Q
1352 1E02 71 LIS H'1'
1353 1E03 18 COM
1354 1E04 15 SL 4 Back by H'20'
1355 1E05 8E ADC
1356 1E06 0E LR Q,DC
1357 1E07 70 CLR
1358 1E08 8C XM
1359 1E09 91 F7 BM AFB2 Go around again
1360 1E0B 03 LR A,QL
1361 1E0C 14 SR 4
1362 1E0D 51 LR 1,A Save to get new HL value
1363 1E0E 24 FE AI -H'2'
1364 1E10 13 SL 1 2 bytes per entry, remember
1365 1E11 2A 0E F0 DCI SCOR
1366 1E14 8E ADC
1367 1E15 0E LR Q,DC Q points back 2 from first passed
1368 1E16 0C PK
1369 * EVAL
1370 * HLS used temporarily in multiply routine
1371 1E17 64 EVAL LISU 4 Compute the material advantage t
1372 1E18 6E LISL 6 Get to ACTM
1373 1E19 4D LR A,I
1374 1E1A 50 LR MAT,A ACTM
1375 1E1B 4D LR A,I
1376 1E1C 54 LR HLS,A PASM
1377 1E1D 18 COM
1378 1E1E 1F INC
1379 1E1F C0 AS MAT
1380 1E20 53 LR 3,A ACTM-PASM
1381 1E21 81 03 BP EVA0
1382 1E23 18 COM
1383 1E24 1F INC
1384 1E25 51 EVA0 LR 1,A |A-P|
1385 1E26 40 LR A,MAT
1386 1E27 C4 AS HLS A+P
1387 1E28 18 COM
1388 1E29 1F INC -(A+P)
1389 1E2A 2A 0C 2C DCI AP20
1390 1E2D 88 AM Add initial value +6
1391 1E2E 12 SR 1 and divide by 2
1392 1E2F 54 LR HLS,A Save temporarily, multiply by
1393 1E30 70 CLR by smaller pos. # in 1
1394 1E31 50 LR MAT,A Product into MAT
1395 1E32 41 LR A,1
1396 1E33 21 01 EVA1 NI H'1' Is the rightmost bit a 1?
1397 1E35 84 04 BZ EVA2 No
1398 1E37 44 LR A,HLS
1399 1E38 C0 AS MAT
1400 1E39 50 LR MAT,A
1401 1E3A 44 EVA2 LR A,HLS
1402 1E3B 13 SL 1
1403 1E3C 54 LR HLS,A
1404 1E3D 41 LR A,1
1405 1E3E 12 SR 1
1406 1E3F 51 LR 1,A
1407 1E40 94 F2 BNZ EVA1 Product is not complete
1408 1E42 40 LR A,MAT
1409 1E43 25 33 CI H'33' Maximum of 51
1410 1E45 81 04 BP EV21
1411 1E47 20 33 LI H'33' Limit range to avoid CM trouuble
1412 1E49 50 LR MAT,A
1413 1E4A 70 EV21 CLR
1414 1E4B E3 XS 3 To get sign
1415 1E4C 40 LR A,MAT
1416 1E4D 81 74 BP EVA3
1417 1E4F 18 COM
1418 1E50 1F INC
1419 1E51 50 LR MAT,A Material advantage with sign
1420 * Compute guard row credit
1421 1E52 63 LISU PLOC
1422 1E53 70 CLR
1423 1E54 53 LR 3,A
1424 1E55 E7 XS 7
1425 1E56 84 1C BZ EVG2 Black is active
1426 1E58 6C LISL 4 Passive's (black's) guard byte
1427 1E59 7A LIS H'A'
1428 1E5A 15 SL 4 Passive's guard bits
1429 1E5B FC NS S Are pieces there?
1430 1E5C 51 LR 1,A
1431 1E5D 24 FF AI H'FF'
1432 1E5F F1 NS 1 Both of them?
1433 1E60 84 04 BZ EVG1 No
1434 1E62 70 CLR
1435 1E63 18 COM Debit
1436 1E64 53 LR 3,A
1437 1E65 6B EVG1 LISL 3 Active's (red's) guard byte
1438 1E66 75 LIS H'5' Active's guard bits
1439 1E67 FC NS S Are pieces there?
1440 1E68 51 LR 1,A
1441 1E69 24 FF AI H'FF'
1442 1E6B F1 NS 1 Both of them?
1443 1E6C 84 1F BZ EVG4 No
1444 1E6E 43 LR A,3
1445 1E6F 1F INC
1446 1E70 53 LR 3,A Credit
1447 1E71 90 1A BR EVG4
1448 1E73 6F EVG2 LISL 7 Passive's (red's) guard byte
1449 1E74 75 LIS H'5'
1450 1E75 FC NS S Are pieces there?
1451 1E76 51 LR 1,A
1452 1E77 24 FF AI H'FF'
1453 1E79 F1 NS 1 Both of them?
1454 1E7A 84 04 BZ EVG3 No
1455 1E7C 70 CLR
1456 1E7D 18 COM Debit
1457 1E7E 53 LR 3,A
1458 1E7F 68 EVG3 LISL 0 Active's (black's) guard byte
1459 1E80 7A LIS H'A'
1460 1E81 14 SR 4 Active's guard bits
1461 1E82 FC NS S Are pieces there?
1462 1E83 51 LR 1,A
1463 1E84 24 FF AI H'FF'
1464 1E86 F1 NS 1 Both of them?
1465 1E87 84 04 BZ EVG4 No
1466 1E89 43 LR A,3
1467 1E8A 1F INC Credit
1468 1E8B 53 LR 3,A
1469 1E8C 43 EVG4 LR A,3
1470 1E8D 13 SL 1 Credit of 2, 0 or -2
1471 1E8E C0 AS MAT Add to MAT
1472 1E8F 50 LR MAT,A
1473 * Center credit
1474 1E90 70 CLR
1475 1E91 53 LR 3,A
1476 1E92 6D LISL 5 Start with passive
1477 1E93 20 66 EVD0 LI H'66' These squares
1478 1E95 FD NS I Are they occupied?
1479 1E96 84 0E BZ EVD2 No
1480 1E98 51 EVD1 LR 1,A Count them
1481 1E99 33 DS 3
1482 1E9A 70 CLR
1483 1E9B 18 COM
**OPERATOR SYNTAX LINE # 1484
1484
1485 1E9C C1 AS 1
1486 1E9D F1 NS 1
1487 1E9E 94 F9 BNZ EVD1
1488 1EA0 0A LR A,IS
1489 1EA1 21 01 NI H'1' Can we consider next byte?
1490 1EA3 84 EF BZ EVD0 Yes
1491 1EA5 43 EVD2 LR A,3
1492 1EA6 C0 AS MAT Debit for passive occupancy
1493 1EA7 50 LR MAT,A
1494 1EA8 70 CLR
1495 1EA9 53 LR 3,A
1496 1EAA 69 LISL 1 Now for active's bytes
1497 1EAB 20 66 EVD3 LI H'66' These squares
1498 1EAD FD NS I Are they occupied?
1499 1EAE 84 09 BZ EVD6 No
1500 1EB0 51 EVD5 LR 1,A Count them
1501 1EB1 33 DS 3
1502 1EB2 70 CLR
1503 1EB3 18 COM
1504 1EB4 C1 AS 1
1505 1EB5 F1 NS 1
1506 1EB6 94 F9 BNZ EVD5
1507 1EB8 0A EVD6 LR A,IS
1508 1EB9 21 01 NI H'1' Can we consider the next byte?
1509 1EBB 84 EF BZ EVD3 Yes
1510 1EBD 43 EVD8 LR A,3
1511 1EBE 18 COM
1512 1EBF 1F INC Credit for active occupancy
1513 1EC0 C0 AS MAT
1514 1EC1 50 LR MAT,A
1515 * Now the second SCOR term
1516 1EC2 4B EVA3 LR A,HL
1517 1EC3 14 SR 4
1518 1EC4 24 FE AI -H'2'
1519 1EC6 55 LR 5,A Save PLY
1520 1EC7 2A 0F B0 DCI MOBS Compute mobility term
1521 1ECA 24 FF AI -H'1'
1522 1ECC 8E ADC
1523 1ECD 16 LM Get earlier mobility
1524 1ECE 18 COM
1525 1ECF 1F INC
1526 1ED0 C2 AS 2 Add current mobility
1527 1ED1 25 0C CI H'C' Difference limited to |12|
1528 1ED3 81 02 BP EVA4
1529 1ED5 7C LIS H'C'
1530 1ED6 25 F4 EVA4 CI -H'C'
1531 1ED8 91 03 BM EVA5
1532 1EDA 20 F4 LI -H'C'
1533 1EDC 13 EVA5 SL 1 Make room for ply term
1534 1EDD 13 SL 1 Would like to shift more
1535 1EDE 56 LR POT,A Save difference (and free 2)
1536 1EDF 70 CLR
1537 1EE0 C0 AS MAT
1538 1EE1 94 03 BNZ EVA6
1539 1EE3 70 CLR
1540 1EE4 C6 AS POT
1541 1EE5 45 EVA6 LR A,5 Get ply value
1542 1EE6 91 07 BM EVA7 Test sign of significant term
1543 1EE8 18 COM If pos. we add H'C'-PLY
1544 1EE9 1F INC
1545 1EEA 24 0C AI H'C'
1546 1EEC 90 03 BR EVA8
1547 1EEE 24 F4 EVA7 AI -H'C' If neg. we add PLY-H'C'
1548 1EF0 C6 EVA8 AS POT Add it in
1549 1EF1 56 LR POT,A Positional term with PLY
1550 1EF2 4B EVA9 LR A,HL
1551 1EF3 14 SR 4
1552 1EF4 24 FE AI -H'2'
1553 1EF6 13 SL 1
1554 1EF7 2A 0E F0 DCI SCOR
1555 1EFA 8E ADC
1556 1EFB 0E LR Q,DC
1557 1EFC 29 1D 59 JMP AFTE AFT routine handles from here on
1558 * EMPT WAST BRAK STOP
1559 1EFF 08 EMPT LR K,P Empty squares in O'51' thru O'54'
1560 1F00 65 LISU ELOC with guard bytes in 50 and 55
1561 1F01 68 LISL 0
1562 1F02 70 CLR
1563 1F03 5C LR S,A Make sure guard byte is empty
1564 1F04 63 LISU PLOC Start with ACTIVE
1565 1F05 74 LIS H'4'
1566 1F06 50 LR 0,A
1567 1F07 90 05 BR EMP3
1568 1F09 0A EMP2 LR A,IS
1569 1F0A 24 30 AI H'30' Actually subtracting 16
1570 1F0C 0B LR IS,A
1571 1F0D 4C EMP3 LR A,S
1572 1F0E 51 LR 1,A
1573 1F0F 0A LR A,IS
1574 1F10 24 04 AI 4
1575 1F12 0B LR IS,A
1576 1F13 4C LR A,S
1577 1F14 C1 AS 1
1578 1F15 51 LR 1,A
1579 1F16 0A LR A,IS
1580 1F17 24 0D AI H'D' Add 13 get to the correct EMPTY lo
1581 1F19 0B LR IS,A
1582 1F1A 41 LR A,1
1583 1F1B 18 COM Reverse 1's and 0's
1584 1F1C 5C LR S,A
1585 1F1D 30 DS 0
1586 1F1E 94 EA BNZ EMP2
1587 1F20 4D LR A,I To index only
1588 1F21 70 CLR
1589 1F22 5C LR S,A Upper guard byte
1590 1F23 0C PK
1591 *-*-*-*-*-*-*-*-*-*
1592 *First replies (maximum of 4 each)
1593 1F24 33 BOK2 DC H'33' 24,20 24-20 To 12-16
1594 1F25 33 DC H'33' 24-20, 24-20
1595 1F26 43 DC H'43' 23-19, 24-20 To 11-15
1596 1F27 20 DC H'20' 22-17, 24-19
1597 1F28 22 DC H'22' 22-17, 22-17 To 10-14
1598 1F29 22 DC H'22' 22-17, 22-17
1599 1F2A 55 DC H'55' 22-18, 22-18 To 9-13
1600 1F2B 55 DC H'55' 22-18, 22-18
1601 1F2C 31 DC H'31' 24-20, 23-18 To 11-16
1602 1F2D 45 DC H'45' 24-19, 22-18
1603 1F2E 66 DC H'66' 21-17, 21-17 To 10-15
1604 1F2F 66 DC H'66' 21-17, 21-17
1605 1F30 55 DC H'55' 22-18, 22-18 To 9-14
1606 1F31 55 DC H'55' 22-18, 22-18
1607 *-*-*-
1608 1F32 08 WAST LR K,P Delay loop to WASTE some time
1609 1F33 7F WAS2 LIS H'F'
1610 1F34 51 LR 1,A
1611 1F35 70 WAS3 CLR
1612 1F36 52 LR 2,A
1613 1F37 32 WAS4 DS 2
1614 1F38 94 FE BNZ WAS4
1615 1F3A 31 DS 1
1616 1F3B 94 F9 BNZ WAS3
1617 1F3D 0C PK
1618 *
1619 1F3E 4B BRAK LR A,HL
1620 1F3F 14 SR 4
1621 1F40 2A 0C 2B DCI H'0C2B'
1622 1F43 8D CM
1623 1F44 84 04 BZ BRA2
1624 1F46 29 17 90 JMP SELE
1625 1F49 2B BRA2 NOP
1626 1F4A 2B NOP
1627 1F4B 2B NOP
1628 1F4C 2B NOP
1629 1F4D 2A 0E F0 STOP DCI SCOR What kind of score?
1630 1F50 16 LM
1631 1F51 25 3F CI H'3F' Does the machine have a win?
1632 1F53 94 08 BNZ STO1 No
1633 1F55 16 LM Yes, at what ply?
1634 1F56 18 COM
1635 1F57 1F INC
1636 1F58 54 LR 4,A
1637 1F59 77 LIS H'7' "I can win in "
1638 1F5A 90 08 BR STO2
1639 1F5C 25 C1 STO1 CI H'C1' Does player have a win?
1640 1F5E 94 2C BNZ STO4 No
1641 1F60 16 LM Yes, at what ply?
1642 1F61 54 LR 4,A
1643 1F62 78 LIS H'8' "You can win in "
1644 1F63 50 STO2 LR 0,A
1645 1F64 28 12 49 PI WMC Write message
1646 1F67 28 16 6B PI DAI Disable interruupts
1647 1F6A 28 16 23 PI MWAD Wait then update
1648 1F6D 44 LR A,4
1649 1F6E 24 3F AI H'3F'
1650 1F70 54 LR 4,A
1651 1F71 58 LR TEMP,A
1652 1F72 28 41 05 PI WDG Report ply
1653 1F75 28 16 23 PI MWAD Wait then update
1654 1F78 28 16 4E PI ENIN Enable interrupts
1655 1F7B 70 CLR
1656 1F7C 53 LR 3,A
1657 1F7D 28 1F 32 STO3 PI WAST Leave message up awhile
1658 1F80 33 DS 3
1659 1F81 94 FB BNZ STO3
1660 1F83 44 LR A,4
1661 1F84 25 02 CI H'2' Early warning only?
1662 1F86 91 04 BM STO4 Yes
1663 1F88 29 40 00 JMP H'4000' Stop
1664 1F8B 29 1D 3E STO4 JMP AFTT Continue play
1665 1F8E 00 DC 0
1666 1F8F 00 DC 0
1667 1F90 00 DC 0
1668 1F91 00 DC 0
END
NUMBER OF ERRORS= 2
1
J =0009 VY =0004 VX =0003 HU =000A HL =000B Y =0002
X =0001 ISA =0018 MWAD =1623 BRAK 1F3E EVAL 1E17 HSAL =0C27
TRAN =43CD UDAT =424D HSAV =0C26 EVA0 1E25 EVA1 1E33 EVA2 1E3A
BRA2 1F49 EVA3 1EC2 EVA4 1ED6 EVA5 1EDC EVA6 1EE5 EVA7 1EEE
EVA8 1EF0 EVA9 1EF2 AFBB 1DEE ABBB 1DF0 MOBS =0FB0 AFBX 1DFC
AFB2 1E01 WMC =1249 TXC =0FE8 SHCB =0FE2 REDM 1A02 EVD0 1E93
EVD1 1E98 EVD2 1EA5 EVD3 1EAB EVD5 1EB0 EVD6 1EB8 EVD8 1EBD
ISE =0029 TREE =0E10 CLER =4762 ISE0 =0028 TRE2 =0E20 TRE3 =0E3E
TRE5 =0E50 WDG =4105 EVG1 1E65 EVG2 1E73 EVG3 1E7F EVG4 1E8C
DAI =166B UPI =0FFA ENIN =164E ULIN =00F5 WAIT =4501 LFJ 1B3B
LBJ 1B9C RBJ 1B6F RFJ 1B0E OBJ0 =0C30 NEJ0 1AEE RBJ0 1B68
OBJ1 =0F10 LFJ2 1B66 LBJ2 1BC7 RBJ2 1B9A ISK =0020 BOK2 1F24
SHL =27C6 YOLD =0C2E XOLD =0C2D DELE 17B6 SELE 1790 CFLG =0C2F
BFLG =0C20 INLH 17CC WTLN =0FE5 YBLN =0C23 XBLN =0C22 SELX =0C2A
COL0 =0C29 DEL2 17C6 INL2 17D4 SEL2 1796 INL3 17D9 SEL3 17A3
SEL4 17AC COM =08F7 JUMA 181A JUMB 181B JUMC 1835 PLMD =0E5B
BCMD =006D TCMD =0044 PLMF =0EE0 DJMP =1229 JUMP 17F1 TEMP =0008
PLMV =0ED0 BKMV =0C25 STMV 1A55 STM0 1A5F JUM1 1806 STM1 1A66
JUM2 1827 STM2 1A83 JUM3 1828 STM3 1A74 JUM4 1842 NOM4 18D1
STM4 1A7B JUM5 1847 NOM5 18D6 STM5 1A86 JUM6 184E NOM6 18DB
JUM7 185D JUM9 1861 LFN 1C84 LBN 1CD4 RBN 1CB1 RFN 1C5E
DBNC =0FEB FIND 1AF1 LINE =0FDF BLNF =0C21 BCNT =0C24 NEN0 1AE4
RBN0 1CAA FIN1 1B02 ELOC =0005 KLOC =0004 PLOC =0003 TCOL =0080
STOP 1F4D XZOP =0034 SCOR =0EF0 YPOS =0F0F XPOS =0F0C PMOV =1116
SHOW =1707 STO1 1F5C STO2 1F63 STO3 1F7D STO4 1F8B ISP =001C
INPF =0FE3 POPS =40BC EMPT 1EFF AFP1 1D85 EMP2 1F09 AFP2 1DA0
EMP3 1F0D TIR =45DB SHR =27D3 SCRA 1A18 RARA 1A34 BORD =132B
SCRD =167D FORE 18E9 NORF 1CF7 CMRG =0FEA INRH 17DB NORM 18B9
NORT 1CFA FORY 1963 NOR0 1D04 NOR1 1D08 SCR1 1A1D INR2 17E5
NOR2 1D14 SCR2 1A26 FOR2 1918 RAR2 1A38 NOR3 1D24 FOR3 1971
NOR4 1D32 FOR4 1974 NOR5 1D27 FOR5 1991 FOR6 19C1 FOR7 1932
FOR8 18FB WMS =4205 CDS =41D5 IJS =22DB HLS =0004 SPS =40D0
FCS =43D6 RASC 1A07 PUSH =40A9 PASM =0027 WAST 1F32 YTST =0009
RGSV =0FC1 WAS2 1F33 RAS2 1A0A WAS3 1F35 RAS3 1A11 WAS4 1F37
POT =0006 CHT =0003 BKT 1A48 AFT 1D35 MAT =0000 FKT 1A40
AFTE 1D59 BOTH 17EA ACTM =0026 AFTT 1D3E AFT0 1D4D AFT1 1D67
FKT2 1A45 WAUD =41C8 WAU1 =41CC BMV2 19DD NEXA 1ACA NEXJ 1AE7
NEXT 1A93 NEXX 1ABA NEXY 1AC7 MAXY =004D PLYD =00E1 PLYH =00D9
JOYI =21AD JOYT =0C00 PLYT =00E9 PLY0 =0C28 FJ1 1BCA FK1 1A4D
AF1B 1DE9 FJ10 1C31 JU11 1808 FJ11 1C41 JU12 180F AP12 1D98
FJ12 1C55 AP13 1D9D BM17 19E3 BM18 19E5 BM19 19EC FJ2 1BD3
AF2B 1DE5 AP2X 1DC0 AP2Y 1DA8 AP20 =0C2C EV21 1E4A AP21 1DB2
AP22 1DB8 AP23 1DD1 FJ3 1BD8 FJ4 1BE2 FJ5 1BF6 FJ6 1BFF
FJ7 1C07 JU71 1864 JU77 18AA JU78 1879 FJ9 1C26